package com.janko.springbootbase.designmode.proxy;

/**
 * @Author nyk
 * @Date 2021/6/3 17:59
 * @Version 1.0
 * @Desc 代理模式的主类输出
 */
public class Main {
    /**
     * 使用代理模式目的：
     *  1、保护被代理类
     *  2、增强代理类的功能
     *
     * 代理模式：就是代理类去代替 被代理类，调用被代理类的内部实现去完成一些任务
     *  简单理解就是，代理类使用的是Java的多态，
     *      1、代理类去接活，
     *      2、被代理类去干活，
     *      3、代理类与被代理类继承同一个接口即可
     * 例如：
     *      1、王婆是个代理类，潘金莲是实际干活开心的类
     */
    public static void main(String[] args) {
        //代理有两种形式
        ProxyWangPo proxyWangPo=new ProxyWangPo();
        proxyWangPo.makeEyesWithMan();
        proxyWangPo.happyWithMan();
        System.out.println("*****************潘氏干完 贾氏干.*******************\n");
        //第二种，有参构造函数，指定某个代理类去干活
        JiaShi jiaShi=new JiaShi();
        ProxyWangPo proxyWangPo1=new ProxyWangPo(jiaShi);
        proxyWangPo1.makeEyesWithMan();
        proxyWangPo1.happyWithMan();
    }
}
